In some examples, optical communication may include providing a barcode such as a linear (e.g., one-dimensional (1D)) barcode or matrix (e.g., two-dimensional (2D)) barcode, which may be encoded with information and read using a reader or image capture device or the like. In some instances, producing, capturing, and/or decoding a barcode may not be stable due to noise caused by over/under exposure, ambient light, shadows, or reflections, or the like. Such instability may be particularly problematic for 2D barcodes and/or for barcodes presented via a display screen such as, for example, a liquid-crystal display (LCD) display. For example, when a barcode is presented via a display screen, reflections may be stronger than when a barcode is presented via paper or the like, particularly in outdoor environments, bright areas, or dark areas, or the like. Such display screens may include display screens for mobile devices or for digital signage or the like.
Further, color barcodes such as color 2D barcodes, which may offer greater data capacity than black and white barcodes, may have instability due to the reasons described above and additional instability due to color shifting during the production and capturing of the 2D color image, for example.
Current techniques to deal with such problems include using local adaptive thresholds to help reduce noise. Such techniques may help with low amounts of noise but not with medium or high levels of noise, for example. Further, current techniques may deal with color shifting by presenting all possible colors in a reserved area of the barcode, which may reduce the capacity of the barcode.
As it is desirable for barcodes to contain more data and as communicating via display screens becomes more prevalent, it may be advantageous to accurately and predictably produce, capture, and decode barcodes.